package dialect

import "reflect"

//dialect接口包含两个方法
//DataTypeOf用于将GO语言的类型转换为该数据库的数据类型
//TableExistSQL返回某个表是否存在的SQL语句，参数是表名（table）
//也就是说使用接口的方法实现可复用性，使用内嵌的方式实现功能的扩展

var dialectsMap=map[string]Dialect{}

type Dialect interface {
	DataTypeOf(typ reflect.Value)string
	TableExistSQL(tableName string)(string,[]interface{})
}

//声明一下两个方法用于注册和获取dialect实例，如果新增加某个数据库的支持，那么调用RegisterDialect即可注册到全局
func RegisterDialect(name string,dialect Dialect){
	dialectsMap[name]=dialect
}

func GetDialect(name string)(dialect Dialect,ok bool){
	dialect,ok=dialectsMap[name]
	return
}